class MyArray<T> {
    //public T[] array = (T[])new Object[10];
    //最好写法
    public Object[] array = new Object[10];
    public T getValue(int pos) {
        return (T)array[pos];//强转即可
    }
    public void setValue(int pos,T val) {
        array[pos] = val;
    }
}
public class Test {
    public static void main(String[] args) {
        MyArray<String> myArray = new MyArray<String>();
        myArray.setValue(0,"hello");
        myArray.setValue(1,"offer");
        myArray.setValue(2,"qinbo");
        System.out.println(myArray.getValue((0)));

        MyArray<Integer> myArray1 = new MyArray<Integer>();
        myArray1.setValue(0,1);
        myArray1.setValue(1,2);
        myArray1.setValue(2,3);
        System.out.println(myArray1.getValue(0));
    }
    public static void main1(String[] args) {
        //时间和空间复杂度

        //时间复杂度:运行时间

        //大O渐进表示法
        //1.用常数1代替运行时间中所有的加法常数
        //2.只保留最高项数
        //3.如果最高项数的乘数不为1,则变为1,得到的结果就是大O阶

        //最好情况:最少次数(上界)
        //最坏情况:最多次数(下界)
        //平均情况:期望次数

        //空间复杂度:临时占用的存储空间大小的量度,大O渐进表示法

        //注意:1.结合代码进行判断时间复杂度和空间复杂度
        //2.常见类型,O(1),O(log2N),O(N),O(N*log2N)O(N^2)

        //包装类->特殊,int -> Integer char->Character
        int a = 10;
        //装箱/装包:基本类型变为包装类型
        Integer i = a;//自动装箱
        Integer ii = Integer.valueOf(a);//手动装箱,即调用包装类型.valueOf
        //拆箱/拆包:包装类型变为基本类型
        int j = ii.intValue();//包装类型变量.拆箱基本类型Value()
        double jj = ii.doubleValue();

        System.out.println(i);
        System.out.println(ii);
        System.out.println(j);
        System.out.println(jj);
    }
}
